﻿モーションツールキット -Convert-

【プラグイン名】MotionToolKitC
【ver.】0.1

【作者】ひげにんじん

動作確認 PMXE
Ver.0.2.1.9

****************************************************************


このツールは、Settingプラグインで多段ボーンに改造したモデルで作ったモーションVMDを
改造前のモデルでも同じ動作となるようなVMDに変換するプラグインです。


■インストールの仕方

　PMX Editorプラグインです。
　お手持ちのPMX Editorを開いて、以下の場所に
　「MotionToolKitC.dll」および「MotionToolKit」フォルダをコピーしたら完了です。

○置き場所
PmxEditor_XXXX\_plugin\User

■使い方

　●事前準備
　　１．Settingプラグインで改変したモデルでモーションを作ります。

　　２．１のモーションをVMDに保存しておきます。

　●使い方
　　１．PMXeを起動します。

　　２．事前準備１でモーションを作ったモデルをPMXeで読み込みます。

　　３．[編集]->[プラグイン]->[User]->[モーションツールキット -Convert-]を選択します。

　　４．事前準備２で作ったVMDをドラッグします

　　５．欲しい追加VMDだけチェックボックスを残して、VMD出力します。
　　　　VMDは、元のVMDがおいてあるフォルダに保存されます。
　　　　詳細は、機能一覧で。


■機能一覧
　１．グローバルロックVMD
　　手首と足首のグローバルロック（一定期間向き固定にする）VMDを出力します。

　２．分割VMD出力
　　PMXEditorに読み込んだモデル情報と、読み込んだVMDを元にしてVMDを変換します。
　　

■機能詳細

　１．グローバルロックVMD

　　前提
　　　この機能を使うためには、あらかじめ足首lockボーンをSettingプラグインで追加したモデルで、
　　　lockしたい区間を連続フレームを打ってあるVMD(いわゆる根性打ち)を作っておく必要があります。
　　　このような、足首lockボーンのキーフレームが連続で打たれている区間の足首の向きを固定にするための
　　　足首ボーンだけの追加VMDを生成します。

　　ロジックは以下の通りです。
　　　１．足首lockの根性打ち区間を検出する
　　　２．先頭フレーム時点における、足首のグローバルな向きを保存する（IK変換後）
　　　３．以降、足首lockのキーフレームが連続する限り、足首ボーンも1F根性打ちして、
　　　　　先頭フレームと同じグローバルな向きになるような足首モーションを自動計算する

　　結果的に、足首骨折への自動対処が「ある程度」可能です。

　　※ある程度といっているのは、諸事情によりどうやっても足首骨折が直らない「姿勢」というのがあるのです。
　　　そんなときは、センターか足IKか下半身を調整してから、再度グローバルロックを試してみましょう。

　　※手首lockも同様です

　　※足先Exは未実装です。
　　　将来的に、なんとなく、足先Exをつかったつま先の自動接地ができればいいなと考えています。

　　※lockボーンの根性打ちは、キーさえ打たれていればOKです。回転は評価しないので全て0で問題ないです。


　２．分割VMD出力
　　まず、読み込み中モデルに施された「等比連動ボーン」の構造を解析して、
　　VMD上の各等比連動ボーンのモーションを分解します。

　　例として、

　　　　・肩ボーンが自動化されている場合は、腕のモーションが「腕」と「肩」に分解されます
　　　　・上半身2に細工されている場合は、上半身2のモーションが「上半身2」と「上半身」に分解されます

　　その上で、各種オプションにある通りの変換VMDを出力します。

　　　１．センター＋上半身
　　　　　センターの回転要素を上半身に展開してゼロ化するかどうか、オプションを選べます。

　　　２．下半身＋足
　　　　　センターの回転要素を下半身に展開してゼロ化するかどうか、オプションを選べます。

　　　３．両腕
　　　　　肩キャンセルを「肩」に移動するかどうか、オプションを選べます。
　　　　　（肩キャンセルから移動した分の腕の動きもシミュレーションしますので、元とほぼ同じ動きになります）

　　　４．首＋頭
　　　　　首と頭のVMDです。

　　　５．指
　　　　　指のVMDです。
　　　　　階段化とか書いてあるやつは、開く／閉じる動作を検出して自動的に階段にしようかと思ったんですが
　　　　　まだ作っていません。

　　　６．(特殊)IK
　　　　　IKのベイクです。まだ作っていません。

　　　７．その他ボーン＋モーフ
　　　　　上記ボーン以外の全てのモーションが保存されます。


　　６を除く、１～７のうち、どれか１つずつのVMDをMMDで追加読み込みすれば、
　　モーション変換は完了します。
　　等比連動構造が、標準ボーンに分解されているため、このVMDはSettingプラグインを使っていない
　　普通のモデルでも動かせるようになります。


　　＠センター回転ゼロ化とは
　　　センターボーンの回転で姿勢が作られているモーションを、上半身と下半身の回転に変換します。
　　　姿勢としては元の姿勢と同じになります。
　　　ただし、キーフレーム間の軌跡、補完は変わります。

　　＠ゼロ化機能がある理由
　　　Setting側にも、センター回転時に頭を固定にする多段構造があります。
　　　作者としては、体幹（特に下半身）を作る上で、センター回転を積極的に使ってモーションを作成するのが
　　　やりやすいと感じました。
　　　一方で、センター回転が残ったままではどうしても、モーションがガクガクするのです。
　　　そんなわけで、変換してセンター回転をゼロにする、という方法論を作り上げてみました。
　　　結果は、センター回転使わないのと同等のモーションができるので、上々かと思います。


●変換精度について
　　VMD変換の精度は、100%互換ではありません。
　　作者が自作した6000F程度のモーション２本においては、
　　　並べてみても違いは分からない。ただし、重ねてみれば少しずれる
　　という程度の誤差でした。
　　同様に一般配布されているモーションもいくつか確認していますが同様です。
　　指先がピッタリ重なるような繊細なシーンだと、気になるかもしれません。

　　開発者としては、自分が使う分には不安がないところまでの完成度までは届きましたが、
　　世の中は広いので、うまく変換できない場合もあるかもしれません。
　　うまくいかないケースは連絡いただければ、調べられるかもしれません。

　　ただ、この方法で、１年かけて長大なモーションを作ったのに変換したら全然違うじゃねーか！コノヤロー！
　　となっても、作者は責任は追えませんので、適宜様子見ながら使ってみてください。


■動作確認環境

　・Windows 7
　・PmxEditor Ver 0.2.1.9
　・PMXファイル限定（PMDは対象外）
　・MMDでのみ確認（MMMは確認しておりません）

■開発環境

Microsoft Visual C# 2010 Express Edition


■免責

本ソフトウェアを利用した結果によるいかなる損害、その他の事柄について
作者はいかなる責任も負いかねます。
自己責任でご利用ください。

　許可事項
　本ソフトウェアを使用する上においては、商用／非商用、有償／無償を問わず制限はありません。
　個人利用やクローズドコミュニティでの改変・修正も自由です。
　（オープンコミュニティでの共有は、下記再配布に当たるため、禁止です）
　また、本ソフトウェア使用に当たっては、特に作者への連絡や著作権の明記などはありません。
　ご自由にお使いください。

　禁止事項
　本ソフトウェアの再配布は禁止とします。
　　１、自由に使っていい反面、過度なサポートは期待しないでほしい
　　２．著作権は放棄していない
　　３．再配布による無用なトラブルは避けたい
　という趣旨なのでご理解ください。
　個別のご相談がありましたら、ご連絡ください。


気づいた点がありましたら、Twitterアカウント @higeninjin までどうぞ。


■解説サイト
http://ch.nicovideo.jp/higeninjin/blomaga/ar873438


＠＠更新履歴

2015/9/16　一般配布

作者　ひげにんじん
